package com.gidgabs.modules.dao;

import com.gidgabs.common.utils.Assist;
import com.gidgabs.dto.TbUserJournalDto;
import com.gidgabs.modules.entity.TbUserJournalEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 用户关系表-日志表
 * 
 * @author lanyonglin
 * @email www.baidu.com
 * @date 2018-07-03 10:06:06
 */
@Mapper
@Repository
public interface TbUserJournalDao extends BaseDao<TbUserJournalEntity> {

    /**
     * 加锁查询
     * @param id
     * @return
     */
    TbUserJournalEntity getForUpdate(Integer id);
    /**
     * 获得TbUserJournal数据的总行数,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
     *
     * @param assist
     * @return
     */
    long getTbUserJournalRowCount(Assist assist);

    /**
     * 获得TbUserJournal数据集合,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
     *
     * @param assist
     * @return
     */
    List<TbUserJournalEntity> selectTbUserJournal(Assist assist);
    /**
     * 通过TbUserJournal的id获得TbUserJournal对象
     *
     * @param id
     * @return
     */
    TbUserJournalEntity selectTbUserJournalById(Integer id);

    /**
     * 获得一个TbUserJournal对象,以参数TbUserJournal对象中不为空的属性作为条件进行查询,返回符合条件的第一条
     *
     * @param obj
     * @return
     */
    TbUserJournalEntity selectTbUserJournalObjSingle(TbUserJournalEntity obj);

    /**
     * 获得一个TbUserJournal对象,以参数TbUserJournal对象中不为空的属性作为条件进行查询
     *
     * @param obj
     * @return
     */
    List<TbUserJournalEntity> selectTbUserJournalByObj(TbUserJournalEntity obj);

    /**
     * 插入TbUserJournal到数据库,包括null值
     *
     * @param value
     * @return
     */
    int insertTbUserJournal(TbUserJournalEntity value);

    /**
     * 插入TbUserJournal中属性值不为null的数据到数据库
     *
     * @param value
     * @return
     */
    int insertNotNullTbUserJournal(TbUserJournalEntity value);

    /**
     * 批量插入TbUserJournal到数据库,包括null值
     *
     * @param value
     * @return
     */
    int insertTbUserJournalByBatch(List<TbUserJournalEntity> value);
    /**
     * 通过TbUserJournal的id删除TbUserJournal
     *
     * @param id
     * @return
     */
    int deleteTbUserJournalById(Integer id);

    /**
     * 通过辅助工具Assist的条件删除TbUserJournal
     *
     * @param assist
     * @return
     */
    int deleteTbUserJournalByAssist(Assist assist);

    /**
     * 通过TbUserJournal的id更新TbUserJournal中的数据,包括null值
     *
     * @param enti
     * @return
     */
    int updateTbUserJournalById(TbUserJournalEntity enti);

    /**
     * 通过TbUserJournal的id更新TbUserJournal中属性不为null的数据
     *
     * @param enti
     * @return
     */
    int updateNotNullTbUserJournalById(TbUserJournalEntity enti);

    /**
     * 通过辅助工具Assist的条件更新TbUserJournal中的数据,包括null值
     *
     * @param value
     * @param assist
     * @return
     */
    int updateTbUserJournal(@Param("enti") TbUserJournalEntity value, @Param("assist") Assist assist);

    /**
     * 通过辅助工具Assist的条件更新TbUserJournal中属性不为null的数据
     *
     * @param value
     * @param assist
     * @return
     */
    int updateNotNullTbUserJournal(@Param("enti") TbUserJournalEntity value, @Param("assist") Assist assist);

    /***
     * 查询日志列表,并关联用户字段
     * @param assist
     * @return
     */
    List<TbUserJournalDto> selectTbUserJournalLinkUser(Assist assist);
}
